spinbutton: Hide the buttons from accessibility
authorMatthias Clasen <mclasen@redhat.com>
Thu, 15 Oct 2020 20:05:02 +0000 (16:05 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 15 Oct 2020 20:32:55 +0000 (16:32 -0400)
The buttons here are not really buttons (the action
is not tied to the "clicked" signal), so triggering
the buttons via a11y does not have the expected effect.

And we expose the Value interface that ATs can use
to set the value.

gtk/gtkspinbutton.c

index b0ff1672f0506170f0064ea13a985825e6e0aa53..cdba319f93eac1a397027051a78f7c720daeeb3f 100644 (file)
@@ -984,7 +984,10 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_signal_connect (spin_button->entry, "activate", G_CALLBACK (gtk_spin_button_activate), spin_button);
   gtk_widget_set_parent (spin_button->entry, GTK_WIDGET (spin_button));
 
-  spin_button->down_button = gtk_button_new_from_icon_name ("value-decrease-symbolic");
+  spin_button->down_button = g_object_new (GTK_TYPE_BUTTON,
+                                           "accessible-role", GTK_ACCESSIBLE_ROLE_NONE,
+                                           "icon-name", "value-decrease-symbolic",
+                                           NULL);
   gtk_widget_add_css_class (spin_button->down_button, "down");
   gtk_widget_set_can_focus (spin_button->down_button, FALSE);
   gtk_widget_set_parent (spin_button->down_button, GTK_WIDGET (spin_button));
@@ -998,10 +1001,12 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_signal_connect (gesture, "released", G_CALLBACK (button_released_cb), spin_button);
   g_signal_connect (gesture, "cancel", G_CALLBACK (button_cancel_cb), spin_button);
   gtk_widget_add_controller (GTK_WIDGET (spin_button->down_button), GTK_EVENT_CONTROLLER (gesture));
-  gtk_gesture_group (gtk_button_get_gesture (GTK_BUTTON (spin_button->down_button)),
-                    gesture);
+  gtk_gesture_group (gtk_button_get_gesture (GTK_BUTTON (spin_button->down_button)), gesture);
 
-  spin_button->up_button = gtk_button_new_from_icon_name ("value-increase-symbolic");
+  spin_button->up_button = g_object_new (GTK_TYPE_BUTTON,
+                                         "accessible-role", GTK_ACCESSIBLE_ROLE_NONE,
+                                         "icon-name", "value-increase-symbolic",
+                                         NULL);
   gtk_widget_add_css_class (spin_button->up_button, "up");
   gtk_widget_set_can_focus (spin_button->up_button, FALSE);
   gtk_widget_set_parent (spin_button->up_button, GTK_WIDGET (spin_button));